/*
 * PathDialogTableProperties.java
 *
 * Copyright 2011 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * 
 * Creado el 30/12/2011, 11:23:38 AM
 */

package com.ufps.cuatro.util.editor;

import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;

import com.ufps.cuatro.modelo.representacion.Propiedad;

/**
 * <i><b>PathDialogTableProperties:</b></i> <p>Esta clase se encarga de desplegar
 * el cuadro de dialogo de selección de archivos y devuelve la ruta del archivo
 * seleccionado.</p>
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 30/12/2011
 * 
 * @see JButton
 * @see ActionListener
 */
public class PathDialogTableProperties extends JButton implements ActionListener {
    private static final long serialVersionUID = -2665326240189949677L;

    private String path;
    private JFileChooser fileChooser;    
    /**
     * Constantes para identificar la acción de ejecución.
     */
    protected static final String EDIT = "edit";
    /**
     * Constantes para identificar la acción de ejecución.
     */
    protected static final String SELECTED = "seleccionar";
    private Propiedad objPropiedad;

    /**
     * Constructor por Defecto.
     * @param objPropiedad Propiedad que será Administrada.
     */
    public PathDialogTableProperties(Propiedad objPropiedad) {
        this.objPropiedad = objPropiedad;
        //this.setActionCommand(EDIT);
        //this.addActionListener(PathDialogTableProperties.this);
        setBorderPainted(true);
        setOpaque(true);       
        configFileChooser(objPropiedad);
    }

    private void configFileChooser(Propiedad objPropiedad) throws HeadlessException {
       try{
        //Set up the dialog that the button brings up.
        fileChooser = new JFileChooser();
        fileChooser.changeToParentDirectory();
        //fileChooser.addActionListener(PathDialogTableProperties.this);        
        if(!objPropiedad.getObjParametrosSet().get(0).getStrValue().isEmpty()){
            path = String.valueOf(objPropiedad.getValue());//.getObjParametrosSet().get(0).getStrValue();
            this.setText(path);
        }
        else{
            path = "";
        }
        if(!path.isEmpty()){
            this.fileChooser.setCurrentDirectory(new File(path));
            this.setText(path);
        }
        int showDialog = this.fileChooser.showDialog(PathDialogTableProperties.this, SELECTED);
        if(showDialog == JFileChooser.APPROVE_OPTION){
            path = this.fileChooser.getSelectedFile().getAbsolutePath();
            this.setText(path);
            this.objPropiedad.setValue(path);
        }
    }catch(java.lang.NullPointerException ex){}
    }

    public void actionPerformed(ActionEvent e) {
       try{
            if (EDIT.equals(e.getActionCommand())) {
                //The user has clicked the cell, so
                //bring up the dialog.
                this.fileChooser.setCurrentDirectory(new File(path));
                this.setText(path);
                this.fileChooser.showDialog(this, SELECTED);
            } else if (SELECTED.equals(e.getActionCommand())){ //User pressed dialog's "OK" button.
                path = this.fileChooser.getSelectedFile().getAbsolutePath();
                this.setText(path);
                this.objPropiedad.setValue(path);
            }
        }catch(java.lang.NullPointerException ex){}
    }
}
